

/**
 * @param {*} func 要执行的函数
 * @param {*} wait 延迟时间
 * @returns 
 */
export function debounce<T extends (...args: any[]) => any>(
    func: T,
    wait: number = 200
): (...args: Parameters<T>) => void {
    let timeout: any = null; // 使用 NodeJS.Timeout 类型（如果你在 Node.js 环境中）---这里使用any会更方便  
    return function (this: any, ...args: Parameters<T>) {
        clearTimeout(timeout!); // 使用非空断言操作符（!）因为我们已经初始化了 timeout  
        timeout = setTimeout(() => {
            func.apply(this, args);
        }, wait);
    };
}
